﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Public Class MetodospagBL
    Public Function RegistrarMetodospag(ByVal TokenConexion As String, ByVal Metodopag As MetodospagBE, ByRef detResp As DetalleRespuesta) As Boolean
        Dim MetpagDAL As MetodospagDAL = New MetodospagDAL("")
        detResp.Mensajes = ""
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoPara(Metodopag, Enumeraciones.operacionesCatalogos.Registrar, detResp.Mensajes)) Then
                MetpagDAL = New MetodospagDAL(TokenConexion)
                If (MetpagDAL.existeMetodopag(Metodopag.DesMetodoP)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_PreviamenteRegistrado,
                                             "Existe un registro con la descripción del metodo de pago indicado." & vbCrLf & detResp.Mensajes)
                    Return False
                Else
                    If (MetpagDAL.registraMetodospag(Metodopag)) Then
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                                 "El metodo de pago se registro con éxito.")
                        Return True
                    Else
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                                 "El Metodo de Pago no pudo ser registrado en el sistema." & vbCrLf & detResp.Mensajes)
                        Return False
                    End If
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                     "El Metodo de Pago no es valido para registrar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.RegistrarMetodospag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al registrar el metodo de pago: " & ex.Message)
            Return False
        Finally
            MetpagDAL = Nothing
        End Try
    End Function

    Private Function EsValidoPara(ByRef Metodospag As MetodospagBE, ByVal tipoOperacion As Enumeraciones.operacionesCatalogos, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (tipoOperacion = Enumeraciones.operacionesCatalogos.Actualizar) Then
                If (String.IsNullOrEmpty(Metodospag.IdMetodP)) Then
                    mensaje &= "El Id del Método de Pago a actualizar es requerido." & vbCrLf
                Else
                    If (Metodospag.IdMetodP <= 0) Then
                        mensaje &= "El Id del Método debe ser mayor a 0 y estar previamente registrado." & vbCrLf
                    End If
                End If
            End If
            If (String.IsNullOrWhiteSpace(Metodospag.DesMetodoP)) Then
                mensaje &= "La descripcion del metodo de pago es obligatorio, no puede ir el campo vacio." & vbCrLf
            Else
                Metodospag.DesMetodoP = Metodospag.DesMetodoP.Trim
                If (Metodospag.DesMetodoP.Length > 255) Then
                    Metodospag.DesMetodoP = Metodospag.DesMetodoP.Substring(0, 255)
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaMetodospag(ByVal TokenConexion As String, ByVal Metodopag As MetodospagBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim metpagDAL As MetodospagDAL = New MetodospagDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoPara(Metodopag, Enumeraciones.operacionesCatalogos.Actualizar, detResp.Mensajes)) Then
                metpagDAL = New MetodospagDAL(TokenConexion)
                If (metpagDAL.actualizaMetodospag(Metodopag, detResp.Mensajes)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Datos del Metodo de Pago actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos del Metodo de Pago." & vbCrLf &
                                             "Verifique que el Id de Método de Pago esté registrado en el sistema." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                     "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.ActualizaMetodospag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar Metodo de Pago: " & ex.Message)
            Return False
        Finally
            metpagDAL = Nothing
        End Try
    End Function

    Public Function CambiaEstatusMetodoPago(ByVal tokenConexion As String, ByVal IdMetodoPag As Integer, ByVal setActivo As Boolean,
                                           ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim metpagDAL As MetodospagDAL = New MetodospagDAL("")
        Try
            If (EsValidoParaGetMetodopag(IdMetodoPag, detResp.Mensajes)) Then
                metpagDAL = New MetodospagDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
                If (metpagDAL.cambiaStatus(IdMetodoPag, setActivo)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Estatus del Método de Pago Actualizado.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de estatus del Método de Pago." & vbCrLf &
                                             "Verifique que el Id de Método de Pago esté registrado en el sistema." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.CambiaEstatusMetodoPago")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar estatus del Método de Pago: " & ex.Message)
            Return False
        Finally
            metpagDAL = Nothing
        End Try
    End Function

    Public Function GetMetodopag(ByVal tokenConexion As String, ByVal IdMetodP As Integer, ByRef detResp As DetalleRespuesta) As MetodospagBE
        detResp.Mensajes = ""
        Dim metpagDAL As MetodospagDAL = New MetodospagDAL("")
        Dim metpagBE As MetodospagBE
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            If (EsValidoParaGetMetodopag(IdMetodP, detResp.Mensajes)) Then
                metpagDAL = New MetodospagDAL(tokenConexion)
                metpagBE = metpagDAL.getMetodopag(IdMetodP)
                If (metpagBE IsNot Nothing) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Se obtuvo la información del Metodo de Pago con éxito.")
                    Return metpagBE
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                                 "No se obtuvo la información del Metodo de Pago" & vbCrLf & detResp.Mensajes)
                    Return Nothing
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                     "El Id para el Método no es correcto:" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.GetMetodopag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener información del Metodo de Pago: " & ex.Message)
            Return Nothing
        Finally
            metpagDAL = Nothing
            metpagBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetMetodopag(ByRef IdMetodP As Integer, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(IdMetodP)) Then
                mensaje &= "El campo ID del Metodo de pago no puede ir vacio." & vbCrLf
            Else
                If (IdMetodP <= 0) Then
                    mensaje &= "El Id del Método de Pago debe ser mayor a 0 y estar previamente registrado en el sistema." & vbCrLf
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.EsValidoParaGetMetodopag")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function GetListadoMetodospag(ByVal tokenConexion As String, ByVal DesMetodoP As String, ByVal tipoEstatus As Enumeraciones.estatusParaBusquedas,
                                         ByRef detResp As DetalleRespuesta) As List(Of MetodospagBE)
        detResp.Mensajes = ""
        Dim metpagDAL As MetodospagDAL = New MetodospagDAL("")
        Dim listmetpagBE As List(Of MetodospagBE)
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            metpagDAL = New MetodospagDAL(tokenConexion)
            listmetpagBE = metpagDAL.getlistadoMetodospag(DesMetodoP, tipoEstatus)
            If (listmetpagBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "Se obtuvo el listado de Metodos de Pago con éxito.")
                Return listmetpagBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoObtuvoRegistrosParaListado,
                                         "No se obtuvo el listado de Metodos de Pago" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "MetodospagBL.GetListadoMetodospag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener el listado de Metodos de Pago: " & ex.Message)
            Return Nothing
        Finally
            metpagDAL = Nothing
            listmetpagBE = Nothing
        End Try
    End Function


End Class
